import { post, postWithQueryParams } from "@/api/request";

/**
 * 评论 控制器 / 评论 控制器添加评论
 * @param {object} data
 * @param {string} [data.attachments] 评论附件ID列表，分隔符为｜
 * @param {string} [data.businessId] 业务ID
 * @param {string} [data.businessType] 业务类型 可选值: CERTIFICATE_DEMOLITION, MIDDLE_PLAN, MIDDLE_PROJECT, PRE_PLAN, PRE_PROJECT, PROJECT_LIST
 * @param {string} [data.content] 评论内容
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<number>}
 * @author 安奇
 */
export function systemCommentAdd(data, config) {
  return post("/system/comment/add", data, config);
}

/**
 * 评论 控制器 / 评论 控制器删除评论
 * @param {object} params
 * @param {object} data
 * @param {number} params.id id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<number>}
 * @author 安奇
 */
export function systemCommentDelete(params, data, config) {
  return postWithQueryParams("/system/comment/delete", params, data, config);
}

/**
 * 评论 控制器 / 评论 控制器分页查询评论
 * @param {object} data
 * @param {string} [data.attachments] 评论附件ID列表，分隔符为｜
 * @param {number} [data.businessId] 业务ID
 * @param {string} [data.businessType] 业务类型 可选值: CERTIFICATE_DEMOLITION, MIDDLE_PLAN, MIDDLE_PROJECT, PRE_PLAN, PRE_PROJECT, PROJECT_LIST
 * @param {string} [data.content] 评论内容
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建用户
 * @param {number} [data.delFlag] 是否已经删除（0未删除，1已删除）
 * @param {number} [data.id] 主键ID
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<SysComment页面展示实体>>}
 * @author 安奇
 */
export function systemCommentList(data, config) {
  return post("/system/comment/list", data, config);
}

/**
 * 评论 控制器 / 评论 控制器查询评论
 * @param {object} data
 * @param {string} [data.attachments] 评论附件ID列表，分隔符为｜
 * @param {string} [data.businessId] 业务ID
 * @param {string} [data.businessType] 业务类型 可选值: CERTIFICATE_DEMOLITION, MIDDLE_PLAN, MIDDLE_PROJECT, PRE_PLAN, PRE_PROJECT, PROJECT_LIST
 * @param {string} [data.content] 评论内容
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<SysComment页面展示实体>>}
 * @author 安奇
 */
export function systemCommentListNopage(data, config) {
  return post("/system/comment/listNopage", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} 评论附件页面展示实体 评论附件页面展示实体
 * @property {string} attUrl 附件url
 * @property {number} id 主键
 * @property {string} originalName 原始文件名
 * @description 评论附件页面展示实体
 */

/**
 * @typedef {object} SysComment页面展示实体 评论页面展示实体
 * @property {array<评论附件页面展示实体>} attachmentList 评论附件ID列表，分隔符为｜
 * @property {string} attachments 评论附件ID列表，分隔符为｜
 * @property {string} content 评论内容
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {number} delFlag 是否已经删除（0未删除，1已删除）
 * @property {boolean} deleteFlag 当前用户是否有删除当前评论权限的标识
 * @property {number} id 主键ID
 * @property {string} realName 用户姓名
 * @description 评论页面展示实体
 */
